package com.leyou.trade.web;

import com.leyou.trade.dto.PayResultDTO;
import com.leyou.trade.service.OrderService;
import com.leyou.trade.service.PayService;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/pay")
public class PayController {

    private final PayService payService;
    private final OrderService orderService;

    public PayController(PayService payService,OrderService orderService) {
        this.payService = payService;
        this.orderService=orderService;
    }

    /**
     * 根据订单id获取支付链接到前端
     * @param orderId 订单id
     * @return
     */

    @GetMapping("/url/{id}")
    public ResponseEntity<String> getPayUrl(@PathVariable("id") Long orderId) {
        return ResponseEntity.ok(this.payService.getPayUrl(orderId));
    }

    /**
     * 微信支付后的回调
     * @param data 回调的请求参数
     * @return
     */
    //produces:声明请求参数为xml格式
    @PostMapping(value = "/wx/notify",produces = MediaType.APPLICATION_XML_VALUE)
    public PayResultDTO handleNotify(@RequestBody Map<String,String>data){
        //到业务层去根据回调结果处理订单状态
        this.orderService.handleNotify(data);
        //返回响应结果
        return new PayResultDTO();
    }

    /**
     * 根据订单id到微信客户端查询订单支付状态 展示二维码5分钟后的最终查询
     * 为了避免微信在支付完成后回调的过程中出现意外  未能成功修改订单状态  导致客户支付成功  但是不能跳转到支付成功页面
     * @param orderId
     * @return
     * @throws Exception
     */
//    @GetMapping("/status/{orderId}")
//    public ResponseEntity<Integer>getOrderStatus(@PathVariable("orderId") Long orderId)throws Exception{
//        //调用业务层查询微信端
//        return ResponseEntity.ok(payService.getOrderStatus(orderId));
//
//    }

}
